home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 59011 / 59011.xpi / chrome / swifttabs.jar / content / swifttabs.js < prev    next >
Text File  |  2010-01-25  |  13KB  |  313 lines

  1. function swifttabs(event)    {
  2.     var prev = swiftTabs_getPrefValue("prev","int");
  3.     var next = swiftTabs_getPrefValue("next","int");
  4.     var close = swiftTabs_getPrefValue("close","int");
  5.     var prevModKeys = swiftTabs_getPrefValue("prevModKeys","string");
  6.     var nextModKeys = swiftTabs_getPrefValue("nextModKeys","string");
  7.     var closeModKeys = swiftTabs_getPrefValue("closeModKeys","string");
  8.     var prevOverride = swiftTabs_getPrefValue("prevOverride","bool");
  9.     var nextOverride = swiftTabs_getPrefValue("nextOverride","bool");
  10.     var closeOverride = swiftTabs_getPrefValue("closeOverride","bool");
  11.     var prevCancelOnForm = swiftTabs_getPrefValue("prevCancelOnForm","bool");
  12.     var nextCancelOnForm = swiftTabs_getPrefValue("nextCancelOnForm","bool");
  13.     var closeCancelOnForm = swiftTabs_getPrefValue("closeCancelOnForm","bool");
  14.     
  15.     if (!prev)    prev = KeyEvent.DOM_VK_F1;
  16.     if (!next)    next = KeyEvent.DOM_VK_F2;
  17.     if (!close)    close = KeyEvent.DOM_VK_F4;
  18.  
  19.     var onForm = false;
  20.     var elt =    document.commandDispatcher.focusedElement;
  21.     if (elt) {
  22.         var ln = elt.localName.toLowerCase();
  23.         if (ln == "input" || ln == "textarea" ||    ln == "select"    || ln == "button" || ln == "isindex")
  24.             onForm = true;
  25.     }
  26.             
  27.     var win =    document.commandDispatcher.focusedWindow;
  28.     if (win && win.document.designMode    == "on")
  29.         onForm =  true;
  30.  
  31.     
  32.     var keyVars = 0;
  33.     
  34.     keyVars = swiftTabs_doTabAction(event,prev,prevModKeys,prevOverride,prevCancelOnForm,onForm,"prev");
  35.  
  36.     if (keyVars == 0)
  37.         keyVars = swiftTabs_doTabAction(event,next,nextModKeys,nextOverride,nextCancelOnForm,onForm,"next");
  38.     
  39.     if (keyVars == 0)
  40.         keyVars = swiftTabs_doTabAction(event,close,closeModKeys,closeOverride,closeCancelOnForm,onForm,"close");
  41.  
  42.     if (keyVars == 2) {    // when a set key was pressed and it should override its default function.
  43.         event.preventDefault();
  44.         event.stopPropagation();
  45.     }
  46. }
  47.  
  48. function swiftTabs_doTabAction(event,theKey,modKeys,override,cancelOnForm,onForm,tabAction) {
  49.     if (cancelOnForm && onForm)
  50.         return 0;
  51.     else if (event.keyCode > 0) {
  52.         if (event.keyCode != theKey)
  53.             return 0;
  54.     } else if (theKey < 1000){
  55.         return 0;
  56.     } else if (String.fromCharCode(event.charCode).toLowerCase() != String.fromCharCode(theKey - 1000).toLowerCase()) {
  57.         return 0;
  58.     }
  59.  
  60.     var ctrlKey = modKeys.charAt(0);
  61.     var altKey = modKeys.charAt(1);
  62.     var shiftKey = modKeys.charAt(2);
  63.     var commandKey = modKeys.charAt(3);
  64.     
  65.     if (event.ctrlKey == ctrlKey && event.altKey == altKey && event.shiftKey == shiftKey && event.metaKey == commandKey) {
  66.         switch(tabAction) {
  67.             case "prev":
  68.                         if (gBrowser.tabContainer.selectedIndex == 0) { // for Deer Park
  69.                             gBrowser.tabContainer.selectedItem = gBrowser.tabContainer.lastChild;
  70.                         } else {
  71.                             gBrowser.tabContainer.advanceSelectedTab(-1);
  72.                         }
  73.                         break;
  74.             case "next":
  75.                         if (gBrowser.tabContainer.selectedItem == gBrowser.tabContainer.lastChild) { // for Deer Park
  76.                             gBrowser.tabContainer.selectedItem = gBrowser.tabContainer.firstChild;
  77.                         } else {
  78.                             gBrowser.tabContainer.advanceSelectedTab(1);
  79.                         }
  80.                         break;
  81.             case "close":    
  82.                         var tab = gBrowser.mCurrentTab;
  83.                         if(tab) gBrowser.removeTab(tab);
  84.                         //window._content.window.close();
  85.                         break;
  86.         }
  87.         if (override)
  88.             return 2;
  89.         else
  90.             return 1;
  91.     } else {
  92.         return 0;
  93.     }
  94. }
  95.  
  96. function swiftTabs_initOptionsWindow() {
  97. /*    obj1    = document.getElementById("prevkey");
  98.     obj2    = document.getElementById("nextkey"); */
  99.     
  100.     var menuArray = Array("prevkey","nextkey","closekey");
  101.  
  102.     for (i = 0; i < menuArray.length; i++) {
  103.         obj = document.getElementById(menuArray[i]);
  104.         
  105.         for (j = 0; j < 10; j++) {
  106.             menuitem = document.createElement("menuitem");
  107.             menuitem.setAttribute("label",j);
  108.             menuitem.setAttribute("value",1048+j);
  109.             obj.appendChild(menuitem);
  110.         }
  111.         
  112.         for (j = 65; j < 91; j++) {
  113.             menuitem = document.createElement("menuitem");
  114.             menuitem.setAttribute("label",String.fromCharCode(j));
  115.             menuitem.setAttribute("value",j+1000);
  116.             obj.appendChild(menuitem);
  117.         }
  118.     }
  119.     
  120.     document.getElementById("keytoprev").value = swiftTabs_getPrefValue("prev","int");
  121.     document.getElementById("keytonext").value = swiftTabs_getPrefValue("next","int");
  122.     document.getElementById("keytoclose").value = swiftTabs_getPrefValue("close","int");
  123.     document.getElementById("prevOverride").checked    = swiftTabs_getPrefValue("prevOverride","bool");
  124.     document.getElementById("nextOverride").checked    = swiftTabs_getPrefValue("nextOverride","bool");
  125.     document.getElementById("closeOverride").checked    = swiftTabs_getPrefValue("closeOverride","bool");
  126.     document.getElementById("prevCancelOnForm").checked    = swiftTabs_getPrefValue("prevCancelOnForm","bool");
  127.     document.getElementById("nextCancelOnForm").checked    = swiftTabs_getPrefValue("nextCancelOnForm","bool");
  128.     document.getElementById("closeCancelOnForm").checked    = swiftTabs_getPrefValue("closeCancelOnForm","bool");
  129.     
  130.     var prevModKeys = swiftTabs_getPrefValue("prevModKeys","string");
  131.     var nextModKeys = swiftTabs_getPrefValue("nextModKeys","string");
  132.     var closeModKeys = swiftTabs_getPrefValue("closeModKeys","string");
  133.  
  134.     if (!prevModKeys) prevModKeys = "0000";
  135.     if (!nextModKeys) nextModKeys = "0000";    
  136.     if (!closeModKeys) closeModKeys = "0000";
  137.     
  138.     if(prevModKeys.charAt(0)==0) document.getElementById("prevCtrl").checked = false;    
  139.     else if(prevModKeys.charAt(0)==1) document.getElementById("prevCtrl").checked = true;
  140.     if(prevModKeys.charAt(1)==0) document.getElementById("prevAlt").checked = false;
  141.     else if(prevModKeys.charAt(1)==1) document.getElementById("prevAlt").checked = true;
  142.     if(prevModKeys.charAt(2)==0) document.getElementById("prevShift").checked = false;
  143.     else if(prevModKeys.charAt(2)==1) document.getElementById("prevShift").checked = true;
  144.     if(prevModKeys.charAt(3)==0) document.getElementById("prevComm").checked = false;
  145.     else if(prevModKeys.charAt(3)==1) document.getElementById("prevComm").checked = true;
  146.  
  147.     if(nextModKeys.charAt(0)==0) document.getElementById("nextCtrl").checked = false;
  148.     else if(nextModKeys.charAt(0)==1) document.getElementById("nextCtrl").checked = true;
  149.     if(nextModKeys.charAt(1)==0) document.getElementById("nextAlt").checked = false;
  150.     else if(nextModKeys.charAt(1)==1) document.getElementById("nextAlt").checked = true;
  151.     if(nextModKeys.charAt(2)==0) document.getElementById("nextShift").checked = false;
  152.     else if(nextModKeys.charAt(2)==1) document.getElementById("nextShift").checked = true;
  153.     if(nextModKeys.charAt(3)==0) document.getElementById("nextComm").checked = false;
  154.     else if(nextModKeys.charAt(3)==1) document.getElementById("nextComm").checked = true;
  155.     
  156.     if(closeModKeys.charAt(0)==0) document.getElementById("closeCtrl").checked = false;
  157.     else if(closeModKeys.charAt(0)==1) document.getElementById("closeCtrl").checked = true;
  158.     if(closeModKeys.charAt(1)==0) document.getElementById("closeAlt").checked = false;
  159.     else if(closeModKeys.charAt(1)==1) document.getElementById("closeAlt").checked = true;
  160.     if(closeModKeys.charAt(2)==0) document.getElementById("closeShift").checked = false;
  161.     else if(closeModKeys.charAt(2)==1) document.getElementById("closeShift").checked = true;
  162.     if(closeModKeys.charAt(3)==0) document.getElementById("closeComm").checked = false;
  163.     else if(closeModKeys.charAt(3)==1) document.getElementById("closeComm").checked = true;
  164. }
  165.  
  166. function swiftTabs_getPrefValue(prefName,prefType) {
  167.     var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
  168.     if (prefService.prefHasUserValue(prefName)) {
  169.         switch (prefType) {
  170.             case    'int': return prefService.getIntPref(prefName);
  171.             case    'bool': return    prefService.getBoolPref(prefName);
  172.             case    'string': return prefService.getCharPref(prefName);
  173.         }
  174.     } else {
  175.         return false;
  176.     }
  177. }
  178.  
  179. function swiftTabs_setPrefValue() {
  180.     var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
  181.  
  182.     var tempArray = Array();
  183.     var prevModKeys = "";
  184.     var nextModKeys = "";
  185.     var closeModKeys = "";
  186.     
  187.     tempArray[0] = document.getElementById("prevCtrl").checked;
  188.     tempArray[1] = document.getElementById("prevAlt").checked;
  189.     tempArray[2] = document.getElementById("prevShift").checked;
  190.     tempArray[3] = document.getElementById("prevComm").checked;
  191.  
  192.     for (i = 0; i < 4; i++) {
  193.         if (tempArray[i])
  194.             prevModKeys += "1";
  195.         else
  196.             prevModKeys += "0";
  197.     }
  198.     
  199.     tempArray[0] = document.getElementById("nextCtrl").checked;
  200.     tempArray[1] = document.getElementById("nextAlt").checked;
  201.     tempArray[2] = document.getElementById("nextShift").checked;
  202.     tempArray[3] = document.getElementById("nextComm").checked;
  203.     
  204.     for (i = 0; i < 4; i++) {
  205.         if (tempArray[i])
  206.             nextModKeys += "1";
  207.         else
  208.             nextModKeys += "0";
  209.     }
  210.  
  211.     tempArray[0] = document.getElementById("closeCtrl").checked;
  212.     tempArray[1] = document.getElementById("closeAlt").checked;
  213.     tempArray[2] = document.getElementById("closeShift").checked;
  214.     tempArray[3] = document.getElementById("closeComm").checked;
  215.     
  216.     for (i = 0; i < 4; i++) {
  217.         if (tempArray[i])
  218.             closeModKeys += "1";
  219.         else
  220.             closeModKeys += "0";
  221.     }
  222.  
  223.     prefService.setIntPref("prev",document.getElementById("keytoprev").value);
  224.     prefService.setIntPref("next",document.getElementById("keytonext").value);
  225.     prefService.setIntPref("close",document.getElementById("keytoclose").value);
  226.     prefService.setCharPref("prevModKeys",prevModKeys);
  227.     prefService.setCharPref("nextModKeys",nextModKeys);
  228.     prefService.setCharPref("closeModKeys",closeModKeys);
  229.     prefService.setBoolPref("prevCancelOnForm",document.getElementById("prevCancelOnForm").checked);
  230.     prefService.setBoolPref("nextCancelOnForm",document.getElementById("nextCancelOnForm").checked);
  231.     prefService.setBoolPref("closeCancelOnForm",document.getElementById("closeCancelOnForm").checked);
  232.     prefService.setBoolPref("prevOverride",document.getElementById("prevOverride").checked);
  233.     prefService.setBoolPref("nextOverride",document.getElementById("nextOverride").checked);
  234.     prefService.setBoolPref("closeOverride",document.getElementById("closeOverride").checked);
  235. }
  236.  
  237. function swiftTabs_convertOldPrefs() {
  238.     window.removeEventListener("load",swiftTabs_convertOldPrefs, true);
  239.  
  240.     var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
  241.     
  242.     if (!prefService.prefHasUserValue("gSwift_prev"))
  243.         return;
  244.     
  245.     try {
  246.         var prev = prefService.getIntPref("gSwift_prev");
  247.         prefService.setIntPref("prev",prev);
  248.         prefService.clearUserPref("gSwift_prev");
  249.     } catch(e) {}
  250.     
  251.     try {
  252.         var next = prefService.getIntPref("gSwift_next");
  253.         prefService.setIntPref("next",next);
  254.         prefService.clearUserPref("gSwift_next");
  255.     } catch(e) {}
  256.  
  257.     try {
  258.         var override = prefService.getBoolPref("gSwift_override");
  259.         prefService.setBoolPref("prevOverride",override);
  260.         prefService.setBoolPref("nextOverride",override);
  261.         prefService.setBoolPref("closeOverride",override);
  262.         prefService.clearUserPref("gSwift_override");
  263.     } catch(e) {}
  264.     
  265.     try {
  266.         var prevModKeys = "";
  267.         var tempArray = Array();
  268.         
  269.         tempArray[0] = prefService.getBoolPref("gSwift_prev_ctrl");
  270.         tempArray[1] = prefService.getBoolPref("gSwift_prev_alt");
  271.         tempArray[2] = prefService.getBoolPref("gSwift_prev_shift");
  272.         tempArray[3] = prefService.getBoolPref("gSwift_prev_comm");
  273.         
  274.         for (i = 0; i < 4; i++) {
  275.             if (tempArray[i])
  276.                 prevModKeys += "1";
  277.             else
  278.                 prevModKeys += "0";
  279.         }
  280.         
  281.         prefService.setCharPref("prevModKeys",prevModKeys);
  282.         prefService.clearUserPref("gSwift_prev_ctrl");
  283.         prefService.clearUserPref("gSwift_prev_alt");
  284.         prefService.clearUserPref("gSwift_prev_shift");
  285.         prefService.clearUserPref("gSwift_prev_comm");        
  286.     } catch(e) {}
  287.  
  288.     try {
  289.         var nextModKeys = "";
  290.         var tempArray = Array();
  291.         
  292.         tempArray[0] = prefService.getBoolPref("gSwift_next_ctrl");
  293.         tempArray[1] = prefService.getBoolPref("gSwift_next_alt");
  294.         tempArray[2] = prefService.getBoolPref("gSwift_next_shift");
  295.         tempArray[3] = prefService.getBoolPref("gSwift_next_comm");
  296.         
  297.         for (i = 0; i < 4; i++) {
  298.             if (tempArray[i])
  299.                 nextModKeys += "1";
  300.             else
  301.                 nextModKeys += "0";
  302.         }
  303.         prefService.setCharPref("nextModKeys",nextModKeys);
  304.         prefService.clearUserPref("gSwift_next_ctrl");
  305.         prefService.clearUserPref("gSwift_next_alt");
  306.         prefService.clearUserPref("gSwift_next_shift");
  307.         prefService.clearUserPref("gSwift_next_comm");
  308.     } catch(e) {}
  309. }
  310.  
  311. window.addEventListener("keypress", swifttabs, false);
  312. window.addEventListener("load",swiftTabs_convertOldPrefs, true);
  313.